3.6.3 TCP, control de congestión
TCP tiene que utilizar un control de congestión terminal a terminal en lugar de un control de congestión asistido por la red, ya que la capa IP no proporciona una realimentación explícita a los sistemas terminales informando que hay congestión en la red.
El método empleado por TCP consiste en que cada emisor limite la velocidad a la que transmite el tráfico a través de su conexión en función de la congestión de red percibida. Si un emisor TCP percibe que en la ruta entre él mismo y el destino apenas existe congestión, entonces incrementara su velocidad de transmisión; por el contrario, si el emisor percibe que existe congestión a lo largo de la ruta, entonces reducirá su velocidad de transmisión.
Para limitar la velocidad a la que se envía el tráfico, el emisor hace un seguimiento de una variable adicional, la ventana de congestión. Esta ventana, indicada como
La velocidad de transmisión del emisor es aproximadamente igual a:
El emisor TCP percibe que hay congestión en la ruta entre él y el destino, si se da un suceso de pérdida, es decir que se produzca un fin de temporización o se perciben 3 ACKs duplicados procedentes del receptor.
TCP interpretará la llegada de los paquetes ACK como indicación de que está todo bien y empleará esos paquetes para incrementar el tamaño de la ventana de congestión, por eso se dice que TCP es auto-temporizado.
Cuando la conexión comienza, el valor de la ventana de congestión es 1 MSS (tamaño máximo del segmento), que da como resultado una velocidad de transmisión inicial aproximadamente igual a
Además, el valor de
Si se produce un suceso de pérdida de paquete dado por un fin de temporización, el emisor TCP establece el valor de
Otra forma de terminar con la fase de arranque lento es cuando el valor de ventanaCongestion alcanza el valor de umbral, y las transacciones pasan al modo de Evitación de la congestión.
Por último, la fase de arranque lento puede terminar cuando se detectan 3 paquetes ACK duplicados, en este caso TCP realiza una retransmisión rápida.
El valor de
Algoritmo agregado en la versión TCP Reno.
El valor de
Si se produce un fin de temporización, el mecanismo de recuperación rápida efectúa una transición al estado de arranque lento después de realizar las mismas acciones que en los modos de arranque lento y evitación de la congestión: el valor de
La distinción se basa en clasificar los dos tipos de detección de congestión. Se entiende que un timeout es signo de una congestión "severa" y que el tripe ACK duplicado es signo de congestión "leve".
Tanto en TCP Tahoe como en TCP Reno, cuando se da un timeout, se setea el tamaño de la ventana de congestión en